<?php

/**
 * Producto form.
 *
 * @package    cronos-doctrine
 * @subpackage form
 * @author     Your name here
 * @version    SVN: $Id: sfDoctrineFormTemplate.php 23810 2009-11-12 11:07:44Z Kris.Wallsmith $
 */
class ProductoForm extends BaseProductoForm
{
    public function configure()
  {
      //Eliminar los campos del formularios  created_at y updated_at
      unset (
        $this['created_at'],
        $this['updated_at'],
        $this['visita'],
        $this['orden'],
        $this->widgetSchema['producto_list'],
        $this['ordenes_list'],
        $this['slug']
        
       

      );
      
      $this->widgetSchema['empresa_id'] = new sfWidgetFormInputHidden(array(),array('value'=> sfContext::getInstance()->getUser()->getAttribute('agente_user_empresa_id')));
      $this->widgetSchema['tipo_id'] = new sfWidgetFormInputHidden();
      $this->widgetSchema['nombre'] = new sfWidgetFormInputText(array(),array('placeholder'=>'Nombre Producto', 'style'=>'width:450px;'));
      $this->widgetSchema['mancheta'] = new sfWidgetFormTextarea(array(),array('placeholder'=>'Breve Descripcion...', 'style'=>'width:98%;'));
      $this->widgetSchema['contenido'] = new sfWidgetFormTextarea(array(),array('placeholder'=>'Contenido...', 'style'=>'width:98%;'));
      
      $product = new Producto();
      $this->widgetSchema['expires_at'] = new sfWidgetFormJQueryDate($product->getCalendario());


      //Precios 
      $precios = $this->getObject()->getProductoPrecio();
      
      
      if(!count($precios)) {
          $precios = array();
      }      
      
      if($this->isNew()){
          $precioE = new PrecioEtiqueta();
          $preciosE = $precioE->getPrecioE(1);
          $tamanos = new Tamano();
          $tamanos = $tamanos->getTamano();
          
          foreach ($preciosE as $pre ){

               if(sfContext::getInstance()->getUser()->getAttribute('servicio_tipo')==1){
              
                   $precio = new ProductoPrecio();
                   $precio->setPrecioEtiquetaId($pre->getId());
                   $precio->setEmpresaId(sfContext::getInstance()->getUser()->getAttribute('agente_user_empresa_id'));
                   $precio->setProducto($this->getObject());
                   array_push ($precios, $precio);
               
               }else{
                   
                   foreach ($tamanos as $tamano){
                       $precio = new ProductoPrecio();
                       $precio->setPrecioEtiquetaId($pre->getId());
                       $precio->setTamanoId($tamano->getId());
                       $precio->setEmpresaId(sfContext::getInstance()->getUser()->getAttribute('agente_user_empresa_id'));
                       $precio->setProducto($this->getObject());
                       array_push ($precios, $precio);
                   }
                   
               }
               
               
                
           }
      }
      
      
              
      $precios_form = new sfForm();
      $count = 0;
      foreach ($precios as $precio){
          
          if($precio->getEmpresaId()==sfContext::getInstance()->getUser()->getAttribute('agente_user_empresa_id')){
              
                $precio_form = new ProductoPrecioForm($precio);
                $precios_form->embedForm($count, $precio_form);
                $count++;
                
          }
      }

      $this->embedForm('precios', $precios_form);
      // Fin Precios
   
      
        //Lista todas las Categorias Padres (Estetica, Nutricion y Veterinario)
     
      $categoria = new Categoria();
    
      if(sfContext::getInstance()->getUser()->getAttribute('servicio_tipo')==1){
            $this->widgetSchema['categoria_list'] = new sfWidgetFormDoctrineChoice(array(
                      'model'     => 'Categoria',
                      'key_method'=>'getId',
                      'query'    => $categoria->getCategoriaPadre(2),

            ));
      }else {
            $this->widgetSchema['categoria_list'] = new sfWidgetFormDoctrineChoice(array(
                      'model'     => 'Categoria',
                      'key_method'=>'getId',
                      'query'    => $categoria->getCategoriaPadre(1),

            ));
      }
      //     $this->widgetSchema['categoria_list']->setOption('renderer_class', 'sfWidgetFormSelectDoubleList');
     $this->widgetSchema['categoria_list']->setLabel('Lista de Categoria'); 
    
     $this->widgetSchema['producto_status_list']->setOption('renderer_class', 'sfWidgetFormSelectDoubleList');
     $this->widgetSchema['producto_status_list']->setLabel('Lista de Status');


  }
    
  public function addPrecio($num) {
      $pre = new ProductoPrecio();
      $pre->setProducto($this->getObject());
      $pre_form = new ProductoPrecioForm($pre);

      $this->embeddedForms['precios']->embedForm($num, $pre_form);

      $this->embedForm('precios', $this->embeddedForms['precios']);

  }
  



public function  bind(array $taintedValues = null, array $taintedFiles = null) {
    

    
    foreach ($taintedValues['precios'] as $key => $newPre)
    {
        if(!isset ($this['precios'][$key])){
            $this->addPrecio($key);
        }
    }
    

    parent::bind($taintedValues, $taintedFiles);
    }
  
  
}
